﻿Протокол Modbus RTU RS232
Порт RS232 построен на микросхеме MAX3232.
Уровень напряжения +6В - -6В.
-6В это 1. +6В это 0. Если передачи нет - идёт 1.

Чтобы это работало, надо включить Modbus RTU и перезагрузиться.
По умолчанию, стоит MASTER
Данные передаются в порт 2. 
Скорость порта устанавливается через настройки. Независимо для каждого порта
Формат данных по умолчанию: 1 стартовый бит, 8 бит данных, 1 стоповый бит, без бита четности
Чётность не проверяется (нет бита контроля чётности).
Данные передаются 16 секунд. Это время контроллер на паузе. Он ждёт подтверждения.

MSETDATA[X1,X2,X3,X4,X5,X6] - передаёт данные в порт из переменных
X1 - начало диапазона переменных от #50 до #499. Каждая переменная содержит 1 байт данных в десятеричном формате.
X2 - Номер устройства Slave
X3 - Начальный адрес записи данных
X4 - Длина записываемых данных в байтах (примечание: регистр Modbus занимает 2 байта)
X5 - Режим записи данных
Х6 - Начало диапазона переменных от #50 до #499, для записи возвращаемого значения кода исключения 
Пример
#200 = 7
#201= 8
#202 = 9
#203= 10
MSETDATA[200,1,5,4,16,300]

MGETDATA[X1,X2,X3,X4,X5,X6] - Получает данные из порта в переменные
X1 - начало диапазона переменных от #50 до #499. Каждая переменная содержит 1 байт данных в десятеричном формате.
X2 - Номер устройства Slave
X3 - Начальный адрес чтения данных
X4 - Длина читаемых данных в байтах (примечание: регистр Modbus занимает 2 байта)
X5 - Режим чтения данных
Х6 - Начало диапазона переменных от #50 до #499, для записи возвращаемого значения кода исключения 
Для проверки китайцы предлагают использовать программу Modbus Slave
Пример
MGETDATA[200,1,19,19,1,300]
//Debug code
#1510 = #200
#1511 = #201
#1512 = #202
#1503 =1(#200:[%.0f],#201:[%.0f],#202:[%.0f])
G04 P2000


MBYTE2DATA[X1,X2,X3] Преобразует данные




MDATA2BYTE[200,50,0]

Программа Termite   http://s2-team.ru/wrkrs/prods/modbus-tools/termite/
https://www.youtube.com/@s2team979
https://www.youtube.com/watch?v=-Q6pDMiHkLU
https://www.youtube.com/watch?v=Pv5cLel-xvE
https://www.youtube.com/watch?v=dzNPKN0nKpA
https://www.win-tech.com/html/demos.htm
https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/
https://smacont.ru/wiki/046/
https://www.youtube.com/watch?v=-aiYod0jgrU


Готовая плата на Алиэкспресс (для неё приложена инструкция n4d-programming.pdf)
https://www.youtube.com/watch?v=SXIcqsesUSI
N4D3E16
RS485 16DI-16DO

16-48 DI NPN/PNP

https://photos.google.com/share/AF1QipPy4I1308gRc1rsdUelNJB01kmrwU_YdS-8uzjizLLUM2eysA77AjcQsGfomMF6WA?key=eUpEYjJKUnR2MTVvMmR2VXZ3bGFqN0VNXy1ldUd3
Foinnc Cnc I got it working. Thanks! I could not get any of my cables (cp2102 based) to behave with the M350 which was the problem. I set up an arduino as a modbus slave (using a max232 to translate to TTL), sending data from the M350 to control the brightness of an LED that simulates sending voltage setting for a plasma THC which will be the use of this. I will be able to set THC voltage in my post processor and have it in gcode that gets sent to the THC. https://photos.app.goo.gl/piHKQuvHBcwE7vWW9

https://www.youtube.com/watch?v=vV3ah2fbXzg
https://www.youtube.com/shorts/RV9rQV6Xu7E
https://www.youtube.com/shorts/vV3ah2fbXzg


Хорошее описание RS232:
https://electronicshubac.pages.dev/posts/rs232-protocol-basics/
